package com.cjm.one.model.order.vo;

import com.baomidou.mybatisplus.annotation.TableField;
import com.cjm.one.model.order.entity.OrderItem;
import com.cjm.one.model.order.enums.OrderStatusEnum;
import com.cjm.one.model.order.enums.PayTypeEnum;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.Date;
import java.util.List;
@Data
public class OrderInfoVo implements Serializable {
    /**
     * id
     */
    private Long id;

    /**
     * 会员_id
     */
    @Schema(description = "会员_id")
    private Long customId;

    /**
     * 昵称
     */
    @Schema(description = "昵称")
    private String nickName;



    /**
     * 订单号
     */
    @Schema(description = "订单号")
    private String orderNo;




    /**
     * 订单总额
     */
    @Schema(description = "订单总额")
    private BigDecimal totalAmount;

    /**
     * 优惠券
     */
    @Schema(description = "优惠券")
    private BigDecimal couponAmount;

    /**
     * 原价金额
     */
    @Schema(description = "原价金额")
    private BigDecimal originalTotalAmount;

    /**
     * 运费
     */
    @Schema(description = "运费")
    private BigDecimal feightFee;

    /**
     * 支付方式【1->微信 2->支付宝】
     */
    @Schema(description = "支付方式【1->微信 2->支付宝】")
    private PayTypeEnum payType;

    /**
     * 订单状态【0->待付款；1->待发货；2->已发货；3->待用户收货，已完成；-1->已取消】
     */
    @Schema(description = "订单状态【0->待付款；1->待发货；2->已发货；3->待用户收货，已完成；-1->已取消】")
    private OrderStatusEnum orderStatus;

    /**
     * 收货人姓名
     */
    @Schema(description = "收货人姓名")
    private String receiverName;

    /**
     * 收货人电话
     */
    @Schema(description = "收货人电话")
    private String receiverPhone;

    /**
     * 收货人地址标签
     */
    @Schema(description = "收货人地址标签")
    private String receiverTagName;

    /**
     * 省份/直辖市
     */
    @Schema(description = "省份/直辖市")
    private String receiverProvince;

    /**
     * 城市
     */
    @Schema(description = "城市")
    private String receiverCity;

    @Schema(description = "订单完成时间")
    private LocalDateTime completeTime;

    /**
     * 区
     */
    @Schema(description = "区")
    private String receiverDistrict;

    /**
     * 详细地址
     */
    @Schema(description = "详细地址")
    private String receiverAddress;

    /**
     * 支付时间
     */
    @Schema(description = "支付时间")
    private LocalDateTime paymentTime;

    /**
     * 发货时间
     */
    @Schema(description = "发货时间")
    private LocalDateTime deliveryTime;

    /**
     * 拒绝退款时间
     */
    @Schema(description = "拒绝退款时间")
    private LocalDateTime noRefundTime;

    /**
     * 确认收货时间
     */
    @Schema(description = "确认收货时间")
    private LocalDateTime receiveTime;

    /**
     * 订单备注
     */
    @Schema(description = "订单备注")
    private String remark;

    /**
     * 取消订单时间
     */
    @Schema(description = "取消订单时间")
    private LocalDateTime cancelTime;

    @Schema(description = "开始退款时间")
    private LocalDateTime startRefundTime;

    @Schema(description = "退款时间")
    private LocalDateTime refundTime;

    /**
     * 取消订单原因
     */
    @Schema(description = "取消订单原因")
    private String cancelReason;

    @Schema(description = "退款描述")
    private String refundDescription;

    @Schema(description = "商品数量")
    private Integer goodsNum;

    /**
     * 创建时间
     */

    private LocalDateTime createTime;

    /**
     * 更新时间
     */
    private LocalDateTime updateTime;
    /**
     * 拒绝退款原因
     */
    private String noRefundReason;
    /**
     * 退款原因

     **/
    private String reasonForRefund;

    private BigDecimal refundAmount;
    /**
     * 删除标记（0:不可用 1:可用）
     */
    private Integer isDeleted;

    private List<OrderItem> orderItemList;

    private static final long serialVersionUID = 1L;
}
